/**
 * Redux Store配置文件
 * 
 * 功能：
 * 1. 创建Redux store实例
 * 2. 组合所有模块的reducer
 * 3. 配置中间件（redux-thunk）
 * 4. 集成Redux DevTools扩展
 * 
 * 技术特点：
 * - 使用combineReducers组合多个reducer
 * - 使用redux-thunk处理异步操作
 * - 支持Redux DevTools调试工具
 * - 使用legacy_createStore创建store（兼容旧版本）
 */

import { legacy_createStore, combineReducers, compose, applyMiddleware } from 'redux'
import reduxThunk from 'redux-thunk'
import login from './login/reducer.ts'
import my from './my/reducer.ts'
import main from './main/reducer.ts'

/**
 * 组合所有模块的reducer
 * 使用combineReducers将多个reducer合并成一个根reducer
 */
const reducers = combineReducers({
    login,  // 登录模块reducer
    my,     // 个人中心模块reducer
    main    // 主应用模块reducer
})

// 创建数据仓库的备选方案（已注释）
// const store = legacy_createStore(reducer, window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__())
// const store = legacy_createStore(reducers)

/**
 * Redux异步操作处理
 * 使用redux-thunk中间件解决异步操作问题
 * 判断是否启用Redux DevTools扩展
 */
let composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({}):compose

/**
 * 创建Redux store
 * 将仓库数据、浏览器redux-dev-tools、reduxThunk插件关联在store中
 */
const store = legacy_createStore(
    reducers, 
    composeEnhancers(applyMiddleware(reduxThunk))
)

export default store
